﻿
class MultiChartBase extends ChartBase
{
	 //图表宽度
	 var mChartWidth : Number = 0;
	 
	 //图例数据
	var mLegendLeft : Number = 10;				//图例的左边界	
	var mLegendTop : Number = 10;				//图例数据顶部偏移
	var mLegendWidth : Number = 110;			//图例宽度	 
	var mLegendYGap : Number = 18;				//图例间Y轴上的间距
	var mLegendXGap : Number = 5;				//图例内容相对于图例边界的偏移	 
		
	 //图表X轴上的坐标分布
	 var mChartCoordinate : Array = new Array();	
	 //X轴上的最小间隔
	 var mChartXGap : Number = 0;
	 //X轴上的有效坐标数
	 var mChartXCount : Number = 0;
	 //X轴上最下间隔对应的时间单元（以天为单位）
	 var mChartXUnit : Number = 0 ;
	 //X轴上有效起始点
	 var mChartXValidPos : Number = 0;
	 
	 //最新更新时间
	 var mUpdateDate : Date;
	 //起始时间
	 var mStartDate : Date;
	 //确诊时间
	 var mDosageDate : Date;
	 
	 //图表数据显示模式
	 var mShowMode : Number = 0;
	 
	 //每个显示点对应的MovieClip，以及相应的ToolTip
	 var mChildmcArr : Array;	 
    
     function MultiChartBase()
     {
		 //设置一些默认数据
		 mChartWidth = 504;
		 mChartXValidPos = 0;
     }
     
     function ParseBase(lv : Object)
     {
        mUpdateDate = Utils.StrToDate(lv["UpdateDate"]);
		mDosageDate = Utils.StrToDate(lv["DosageDate"]);
		mShowMode = Number(lv["ShowMode"]);
     }
     
	private function SetXCoordinate(endDate:Date, unitDay:Number, count:Number)
	{
		mChartXGap = (mChartWidth - 2*mChartXValidPos)/(count-1) ;
		mStartDate = Utils.GetDate(endDate, (-1)*unitDay*(count-1));
		
		for(var i=count-1; i>=0; i--)
		{
			//将坐标值以及对应的X坐标保存
			mChartCoordinate.push([Utils.GetDate(endDate, (i-count+1)*unitDay), i*mChartXGap-20] );
		}
	}
	
	//根据显示时间模式以及最新时间来设置X轴的坐标系数(0:一个星期， 1：一个月， 2：三个月， 3：一年， 4：所有)
	public function ParseXCoordinate(startDate:Date, endDate:Date, showMode:Number)
	{
		switch(showMode)
		{
		case 0:	//一个星期
			mChartXCount = 7;
			mChartXUnit = 1;
			break;
			
		case 2:	//三个月
			mChartXCount = 6;		
			mChartXUnit = 20;
			break;
			
		case 3:	//一年
			mChartXCount = 6;
			mChartXUnit = 60;			
			break;
			
		case 4:	//所有
			mChartXCount = 2;
			mChartXUnit = Utils.GetDayNumber(endDate, startDate);	
			break;
			
		case 1:	//一个月			
		default: //一个月
			mChartXCount = 6;
			mChartXUnit = 5;		
			break;
		}
		
		SetXCoordinate(endDate, mChartXUnit, mChartXCount);
	}
	
	//根据时间获得相对于X轴起始点的X偏移距离
	public function GetXMigration(dt:Date)
	{
		var retVal = 0;
		var migrateDay = Utils.GetDayNumber(dt, mStartDate);		
		if(migrateDay < 0)
		{
			return -1;
		}
		
		retVal = mChartXValidPos + ((migrateDay*1.0)/mChartXUnit)*mChartXGap ;
		if(retVal > mChartWidth - mChartXValidPos)
		{
			retVal = -1;
		}
		
		return retVal ;
	}
	
	//以特定风格显示文本
	public function DrawHtmlText(textName:String, x:Number, y:Number, textColor:Number, size:Number)
	{
		var mc : MovieClip = mClip;
		
		var textformat = new TextFormat();
		textformat.color = Color(textColor);
		textformat.align = "left";
		textformat.size  = 10;
		
		var label:TextField = mc.createTextField(textName, mc.getNextHighestDepth(), x, y, 0, 0);		
		label.setTextFormat(textformat);
		label.html = true;
		label.autoSize = "left";
		label.htmlText = textName;		
	}	
	
	//以特定风格显示文本
	public function DrawText(textName:String, x:Number, y:Number, textColor:Number, size:Number, align:String)
	{
		var mc : MovieClip = mClip;
		
		var textformat = new TextFormat();
		textformat.color = Color(textColor);
		textformat.align = align;
		textformat.size  = 10;
		
		var label:TextField = mc.createTextField(textName, mc.getNextHighestDepth(), x, y, 0, 0);		
		label.setTextFormat(textformat);
		label.html = true;
		label.autoSize = align;
		label.htmlText = textName;		
	}		
}